package org.llc.authorization.service;

import org.llc.common.starter.model.UserAccount;

/**
 * 用户账户Service
 *
 * @author llc
 * @date 2020/2/27 14:27
 * @since 1.0.0
 */
public interface UserAccountService {

    /**
     * 根据用户名或手机号查询用户账户
     * @param username 用户名或手机号
     * @return org.llc.common.model.UserAccount
     * @author llc
     * @date 2020/2/27 14:35
     */
    UserAccount selectByUserName(String username);

    /**
     * 根据手机号查询用户账户
     * @param phone 手机号
     * @return org.llc.common.model.UserAccount
     * @author llc
     * @date 2020/2/27 14:35
     */
    UserAccount selectByPhone(String phone);

    /**
     * 组合用户账户对象与角色权限
     * @param userAccount 用户账户对象
     * @return org.llc.common.model.UserAccount
     * @author llc
     * @date 2020/2/27 14:29
     */
    UserAccount composeUserAccountAndAuthority(UserAccount userAccount);

    /**
     * 验证用户是否可用
     * @param userAccount 用户账户对象
     * @author llc
     * @date 2020/2/27 14:31
     */
    void validateUser(UserAccount userAccount);

    /**
     * 根据微信unionId查询用户
     * @param unionId  微信Id
     * @return org.llc.common.model.UserAccount
     * @author llc
     * @date 2020/5/22 15:33
     */
    UserAccount selectWeChatUnionId(String unionId);
}
